Programming notebooks have become a valuable asset in a software developer's toolkit. A programming notebook, such as the popular iPython Notebook, allows a developer to more rapidly develop and test code, typically by enabling a dynamic command-line shell interface which the developer can use to input, execute, and view associated outputs for lines of program code in a read-execute-print loop (“REPL”). Programming notebook outputs can be provided in various formats, such as a JavaScript Object Notation (“JSON,” which is a lightweight data-interchange format) document containing an ordered list of input/output cells which can contain code, text, mathematics, plots and rich media. Programming notebook outputs can also be converted to a number of open standard output formats (HTML, HTML presentation slides, LaTeX, PDF, ReStructuredText, Markdown, Python, etc.).
Typically, a programming notebook consists of a sequence of cells. A cell is a multi-line text input field, and its contents can be executed by the developer using the programming notebook interface. Code cells allow the developer to edit and write code and can provide features such as syntax highlighting and tab completion. When a cell is executed using a backend system associated with the programming notebook, results are displayed in the notebook as the cell's output. Output can be displayed in a variety of formats such as text, data plots, and tables.
In a normal programming notebook workflow, the developer can edit cells in-place multiple times until a desired output or result is obtained, rather than having to re-run separate scripts. The programming notebook interface enables the developer to work on complex computational programs in discrete and manageable pieces. The developer can organize related programming ideas into cells and work progressively forward as various pieces are working correctly. Once a developer has completed a workflow, the programming notebook can be saved or downloaded into a format which, among other things, may remove output results and convert some cell contents (e.g., some contents may be converted to non-executable comments in an output programming language).